package com.season.seasonStudy.javase.j_009_interface;

/**
 * 多重继承族谱就成了蜘蛛网了，哇，很帅哦
 * 
 * 
 * 
 * 
 * 
 * @author 季节
 *
 */


/**
 * 	接口 (类型)  interface （行为规范，标准的传递，可多个接口实现
					）
		特点：成员都是方法定义，而且是没有实现可以定义常量
			所有的方法都是public的 抽象的
			所有的属性都是常量（ public static final）
			不能实例化
		实现接口：
			使用implements 实现接口 多个用逗号隔开
			实现类必须实现所有抽象方法，除非是抽象类
				
		与类的区别：
				可以多重继承
				可以多重实现
				没有属性传递
			子类 （继承extends） 父类  （单一继承）
		    	接口  继承extends）  接口  （多重继承）
			类 （实现implements）接口（多重实现）
		
		接口 对象=new 实现类（）；
		
 * @author jijie
 *
 * 
 * 是什么？
	特点：没有属性，成员都是定义的方法，而且是没有实现的方法，可以定义常量！！！

	接口是行为标准；抽象是图纸！！

	接口只是某些行为！！但这些行为可以不在一个父类里，可以在行为标准！！！

	而类是规范了这个物种！

	可以实行多个接口实现！！

	所有的方法都是没实现的！所有属性都是常量！！！


为什么？
	因为子类不能重复继承！！！而接口就是解决这个事情的！！
用在哪？
	也是为了多态！！！
怎么做？
	1）调用常量！
		所有属性都是常量（public static final，都是可以省略的！！！）

	2) 调用函数！
		实现接口的时候，用implments实现接口，
		多个用逗号隔开
		实现类必须实现所有抽象方法， 除非是抽象类！！！
		实现的时候没有数据传递！！这样就提高了灵活度
	
	与类的区别！！
		a）可以多重继承！！

		接口可以继承接口！！
			接口 继承（extends） 接口2
			类   继承（extends） 类2
		b）可以多重实现！！
		c）所以没有属性传递的时候就可以用接口！！！


	类 实现（implements） 接口；


	接口 对象=new 实现类!!!

		

异常里发生异常

必须走的！！不管有没有处理异常都会发生！！

只有一种情况可以让finally不走！
	那就是System.exit(0);

当遇到return   即在try里有return  finally还是会走！！


throw	动作！
	抛出异常！！！ 在某种情况下手动抛异常！！


		try
			throw new Exception（"字符串！！！"）;
		catch
			e.getMessage();



throws  声明！
	生命要跑出的错误类型！

//有自己想定的异常就自己写一个，
自己产生一个异常！！，自己抛！！如果自己没想到有什么异常就不用抛
//解决异常的俩种方法，一个是try catch自己处理，另一个是抛异常！！
一般都抛throws Exception，这样会让另一个程序员发现不至于找不到异常
//Exception是检查式 异常！当有检查时异常就必须用到try catch    
  InputMismatchException是运行时异常！！有运行时异常不用非得加try catch！！
  
  
  
  是什么？
	/**
		 * 
		 * 异常
		 * 根本的异常类型！！
		 * 1、最根本的是编译错误！！！
		 * 2、运行异常！！！！
		 * 3、检查时异常！！就是不用try catch就会报错的！！
		 * 
		 * 常见运行时异常！！
		 * 1、越界异常
		 * 2、空指针异常！
		 * 3、类型不匹配异常！！InputMismmatchException
		 * 4、数学上算数异常！！！ArithmeticException（算数异常！！）
		 * 5、数字格式化异常！！！NumberFormatException（在数组里经常用String型转换各种类型时）
		 * 6、向下转型异常！！！！也就是原来的子类和强转后类型不一样！！！ 
		 * 
		 * 常见检查异常，也叫强制型异常！！
		 * 1、sdf.parse("2000");
		 *     字符串转时间的功能！！
		 * 
		 * 
		 */
		

		//e.printStackTrace();//打印堆栈异常信息！！

		/**
		 * 总结：：
		 * 
		 * 1、try里放可能出现异常的代码！！
		 * 2、catch里放处理异常的代码！！
		 * 3、流程：
		 * 		a:没有try catch-------  从发生异常的代码的地方终止程序！
		 * 				原因是虚拟机给你处理，处理完你就程序就结束
		 * 		b:有try catch--------  从try里发生异常的代码地方终止，进入
		 * 				catch 程序继续往下执行！！
		 * 		c：有try catch-------- 无异常就不走catch；；；
		 * 4、catch(InputMismmatchException e){}
		 *    catch(ArithmeticException e){}
		 *   catch(Exception e){}//这个必须放在上边这些具体类型之后！否则会报错
		 *   //作用是补漏，处理处理不了的异常！！能处理所有的异常！！
		 * 
		
为什么？
	因为不处理异常，程序就不会往下走！！加上了一场就会继续往下进行！！！
用在哪？
	用在可能发生错误的代码的地方！！
怎么做？
	4、catch(InputMismmatchException e){}
		 *    catch(ArithmeticException e){}
		 *   catch(Exception e){}//这个必须放在上边这些具体类型之后！否则会报错
		 *   //作用是补漏，处理处理不了的异常！！能处理所有的异常！！
  
  
  1、可以自己产生异常！用throw手动抛出异常！！
2、自己发现不了的异常用Exception。系统会自己产生异常！！
3、产生异常后一共有俩种解决办法：
		a：try{}catch{}自己解决
		b：throws 向上抛，谁调用这个方法谁解决，
			当然也是用的try {}catch{}解决！！

第一种情况：只要不用try catch进行处理解决，那这个异常就不会执行异常代码后边的代码行！！！
	系统就会帮你处理，然而你的程序也会终结！！
第二种情况：不想再本类里解决，即本部和外部有不同的错误提醒，放在外边解决的话，
	就用new Exception（“”）；创造一个字符串的错误提醒！！向上抛，谁调用此方法
	谁就处理此方法！
  
  
 * 
 * 
 * 
 *
 *
 */
public class Class_Interface {

}
